实现一个为接口添加一个新字段的类型。该类型接收三个参数,返回带有新字段的接口类型
例如:
type Test = { id: '1' }
type Result = AppendToObject<Test, 'value', 4> // expected to be { id: '1', value: 4 }
// 答案 1
type AppendToObject<T, U extends keyof any, V> = {
[K in keyof T | U]: K extends keyof T ? T[K]: V
}
// 答案 2
type Flatten<T> = { [K in keyof T]: T[K] }
type AppendToObject<T, U extends string, V> = Flatten<T & { [key in U]: V }>